﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using Spring.Context;
using Spring.Context.Support;
using GRUPO_4.Negocio;
using GRUPO_4.Dominio;

namespace GRUPO_4.Pruebas
{
    [TestFixture]
    public class TestProfesionService
    {
        private IApplicationContext contexto = null;

        [TestFixtureSetUp]
        public void InicializarSpring()
        {
            this.contexto = new XmlApplicationContext(
                "assembly://GRUPO-4/GRUPO_4/CapaNegocio.xml",
                "assembly://GRUPO-4/GRUPO_4/CapaPersistencia.xml");
        }

        [Test]
        public void TestRealizarProfesionCorrectamente()
        {
            ProfesionService profesionService = (ProfesionService)this.contexto.GetObject("profesionService");
            Assert.NotNull(profesionService);
            Profesion profesionRealizada = null;
            Assert.DoesNotThrow(delegate
            {
                Profesion profesionNueva = new Profesion();
                profesionNueva.codProfesion = 999;
                profesionNueva.nombreProfesion= "Tecnico Agropecuario";

                profesionRealizada = profesionService.CrearProfesion(profesionNueva);
            });

            Assert.NotNull(profesionRealizada);
            Assert.Greater(profesionRealizada.codProfesion, 0);
        }

        [Test]
        public void TestEliminarProfesion()
        {

            ProfesionService profesionService = (ProfesionService)this.contexto.GetObject("profesionService");
            Assert.NotNull(profesionService);
            Profesion profesionExiste = profesionService.ObtenerProfesion(23);
            Profesion profesionEliminada = null;
            Assert.DoesNotThrow(delegate
            {
                profesionService.EliminarProfesion(profesionExiste);
            });
            Assert.Null(profesionEliminada);
        }

        [Test]
        public void TestListarProfesion()
        {
            ProfesionService profesionService = (ProfesionService)this.contexto.GetObject("profesionService");
            Assert.NotNull(profesionService);
            ICollection<Profesion> listaProfesion = null;
            Assert.DoesNotThrow(delegate
            {
                listaProfesion = profesionService.ListarTodoslasProfesiones();
            });
           
            Console.WriteLine(listaProfesion.Count);
            Assert.Greater(listaProfesion.Count, 0);
            foreach (Profesion Ofer in listaProfesion)
            {
                Console.WriteLine(Ofer.codProfesion + "|" + Ofer.nombreProfesion);
            }
        }

        [Test]
        public void TestConsultarProfesion()
        {
            ProfesionService profesionService = (ProfesionService)this.contexto.GetObject("profesionService");
            Assert.NotNull(profesionService);
            Profesion profesionConsultada = null;
           
            profesionConsultada = profesionService.ObtenerProfesion(123);
            
            Assert.NotNull(profesionConsultada);
        }

    }
}